package com.dingding.transfer.stamper.service;

import com.dingding.transfer.stamper.dto.*;
import com.dingding.transfer.stamper.entity.*;

import java.util.List;

/**
 * @author wangxiyuan
 * @description
 * @createDate 2021/3/31 9:29
 **/
public interface BusinessService {
    BaseResult saveProcessDetail(ProcessDetail processDetail);

    BaseResult updateProcessStatus(String processId,int status);
    /**
     *
     * @param applyId 申请实例Id
     * @return
     */
    ApplyInfo findApplyInfo(String applyId);

    ProcessDetail findApplyDetail(String userid,String uuid);
    /**
     * 插入审批记录信息
     * @param corpId 钉钉企业Id
     * @param processId 申请流程Id
     * @return
     */
    BaseResult batchSaveProcessContent(String corpId,String processId);

    /**
     * 更新申请记录的状态
     * @param pushRecord
     */
    void updatePushRecord(PushRecord pushRecord);

    /**
     * 记录推送记录，并校验印章使用次数是否已经超过申请次数
     * @param uuid 设备Id
     * @param applyId 申请Id
     * @param userid 用户ID
     * @param applyNum 申请次数
     * @return
     */
    BaseResult checkPushRecord(String uuid, String applyId, String userid,int applyNum);


    BaseResult pushRecord(ApplyInfo applyInfo);
    /**
     * 推送申请单
     * @param uuid 设备Id
     * @param applyId 申请id
     * @return
     */
    BaseResult pushRecord(String uuid, String applyId);

    BaseResult pushRecord(PushRecord pushRecord);

    /**
     * 推送指纹
     * @param data 指纹相关数据
     * @return
     */
    BaseResult fingerAdd(FingerAddReq data);

    /**
     * 获取相关设备下的指纹Id
     * @param uuid 设备Id
     * @param page 是否分页
     * @return
     */
    List<FingerDetail> getFingerList(String uuid, boolean page);

    User findUserInfo(String userName);

    /**
     * 获取加盖印章记录
     * @param applyId 申请单Id
     * @param uuid 设备id
     * @return
     */
    List<StamperRecord> getStamperRecords(String applyId,String uuid);

    /**
     * 获取设备Id
     * @param deviceFiled 设备属性，既有可能是设备名称 也有可能是设备Id
     * @return
     */
    String getDeviceId(String deviceFiled);

    /**
     * 报送用印记录
     * @param useStampRecords 用印记录
     * @return
     */
    BaseResult reportStampRecord(List<UseStampRecord> useStampRecords);

    /**
     * 获取公司相关信息
     * @param corpId
     * @return
     */
    CompInfo getCompInfo(String corpId);

    BaseResult updateCompStatus(String corpId);
}
